home *** CD-ROM | disk | FTP | other *** search
/ MacWorld UK 2000 March / MW_UK_2000_03.iso / Shareware World / Utilities / Text Processing / Alpha / Tcl / SystemCode / alphaDefinitions.tcl < prev    next >
Encoding:
Text File  |  1999-11-28  |  26.2 KB  |  731 lines  |  [TEXT/ALFA]

  1. ## -*-Tcl-*-
  2.  # ###################################################################
  3.  #  Alpha - new Tcl folder configuration
  4.  # 
  5.  #  FILE: "alphaDefinitions.tcl"
  6.  #                                    created: 98-04-05 21.31.20 
  7.  #                                last update: 28/11/1999 {2:45:05 pm} 
  8.  #  Author: Vince Darley
  9.  #  E-mail: <vince@santafe.edu>
  10.  #    mail: 317 Paseo de Peralta, Santa Fe, NM 87501
  11.  #     www: <http://www.santafe.edu/~vince/>
  12.  #  
  13.  # Reorganisation carried out by Vince Darley with much help from Tom 
  14.  # Fetherston, Johan Linde and suggestions from the Alpha-D mailing list.  
  15.  # Alpha is shareware; please register with the author using the register 
  16.  # button in the about box.
  17.  #  
  18.  # ###################################################################
  19.  ##
  20.  
  21. proc alpha::getDefinitions {} {}
  22.  
  23. namespace eval flag {}
  24. namespace eval global {}
  25.  
  26. ensureset tclvars {}
  27. ensureset allFlags {}
  28. ensureset allVars {}
  29. set invisibleModeVars(wordWrap) 1
  30.  
  31. proc flag::options {v} {
  32.     global flag::list
  33.     set thelist [set flag::list($v)]
  34.     set litems [lindex $thelist 1]
  35.     switch -- [lindex $thelist 0] {
  36.     "varitem" {
  37.         return [uplevel \#0 "set $litems"]
  38.     }
  39.     "varindex" {
  40.         return [uplevel \#0 "set $litems"]
  41.     }
  42.     "array" {
  43.         global $litems
  44.         return [lsort [array names $litems]]
  45.     }
  46.     }
  47.     return $litems
  48. }
  49.  
  50. # To fix the position of the status bar, click this box.||To allow dragging
  51. # of the status bar (usually at the bottom of the screen), click this box.
  52. newPref linkflag lockStatus 1
  53. # To scroll the horizontal scrollbar automatically to follow your typing, 
  54. # click this box||To enforce manual use of the horizontal scroll bar,
  55. # click this box.
  56. newPref linkflag autoHScroll 1
  57. # To save files automatically (except untitled buffers) every 'changesLim' 
  58. # changes, click this box||To disable the automatic saving of files, click
  59. # this box.
  60. newPref linkflag autoSave 0
  61. # To make the cursor blink, click this box||To stop the cursor blinking, 
  62. # click this box
  63. newPref linkflag blinkingCursor 1
  64. # To use a solid rectangular cursor, click this box||To use a thin vertical 
  65. # cursor, click this box.
  66. newPref linkflag blockCursor 0
  67. # To color words according to mode and context, click this box||To display all 
  68. # text more quickly, but in plain black and white, click this box.
  69. newPref linkflag coloring [expr {${alpha::platform} == "alpha"}]
  70. # To enable drag and drop editing using the mouse, click this box||To disable 
  71. # drag and drop editing using the mouse, click this box.
  72. newPref linkflag dragAndDrop 1
  73. # To display a horizontal scrollbar in new windows, click this box||To make 
  74. # maximum use of window space and not use a horizontal scrollbar, click this box.
  75. newPref linkflag horScrollBar 1
  76. # To enable clicking on hypertext items, click this box||To disable clicking
  77. # on hypertext items, click this box
  78. newPref linkflag hyperText 1
  79. # To force the insertion point to move with 'pageBack' and 'pageForward' 
  80. # commands, click this box||To leave the insertion point in place (usually 
  81. # offscreen) after 'pageBack' and 'pageForward' commands, click this box
  82. newPref linkflag moveInsertion 1
  83. # To list all file types (as opposed to just 'TEXT') in open/save dialog 
  84. # boxes, click this box||To display only 'TEXT' files in open/save dialog 
  85. # boxes, click this box.
  86. newPref linkflag openAllFiles 0
  87. # To make the window scroll dynamically while using vertical scrollbars, 
  88. # click this box||To make the window scroll only after releasing the button 
  89. # in a vertical scrollbar, click this box
  90. newPref linkflag powerThumb 1
  91. # Respect projector resources
  92. newPref linkflag projectorAware 1
  93. # To show all tabs, carriage returns, spaces etc with distinct symbols, 
  94. # click this box||To display whitespace characters normally, click this box.
  95. newPref linkflag showInvisibles 0
  96. # To use a small font for the various pop-up menus (e.g. marks menu), click this 
  97. # box||To use the standard system font for the popup menus, click this box.
  98. newPref linkflag smallMenuFont 1
  99. # if set, sorted is the default for function and section menus
  100. newPref linkflag sortedIsDefault
  101. # To allow tearing off of menus, click this box||To disable tearing-off of
  102. # menus, click this box
  103. newPref linkflag tearoffMenus 1
  104. # To enable Alpha's use of system temporary memory, click this box||To disallow
  105. # Alpha from using system temporary memory, click this box.
  106. newPref linkflag tempMem 1
  107. # To retain editing information to allow undo/redo operations, click this box||
  108. # To edit destructively (saving memory, and operating a little faster in, for 
  109. # example global replaces), click this box.
  110. newPref linkflag undoOn 1
  111. # To automatically insert a carriage-return when you exceed a line
  112. # length of 'fillColumn' characters, click this box||To disable automatic
  113. # text wrapping, click this box.
  114. newPref linkflag wordWrap 1
  115. # To add a description of each preference to the standard dialogs, click this 
  116. # box||To use standard preference dialogs, with a 'Help' button to display
  117. # descriptions, click this box
  118. newPref flag includeDescriptionsInDialogs 0
  119. # Used by completion routines: if there is a selection and you and
  120. # trying to complete something, and this item is set, Alpha will ask before 
  121. # deleting the selection.|| Used by completion routines: if there is a 
  122. # selection and you and trying to complete something, and this item is set, 
  123. # Alpha will ask before deleting the selection.
  124. newPref flag askDeleteSelection 0
  125. # To make a backup every time a file is saved, click this box||To save disk
  126. # space and not make backup copies when saving files, click this box.
  127. newPref flag backup 0
  128. # To force newly opened windows onto the main screen, click this box||To allow
  129. # new windows to be opened anywhere, including off screen, click this box.
  130. newPref flag forceMainScreen 1
  131. # To iconify windows when you switch to another application, click this box||
  132. # To leave windows alone when switching to other applications, click this box.
  133. newPref flag iconifyOnSwitch 0
  134. # To sort the items in the popup function menu '{}', click this box||To leave
  135. # the items in the popup function menu '{}' in the order in which they appear,
  136. # click this box.
  137. newPref flag sortFuncsMenu 1
  138. # To place two spaces after the '.' at the end of each sentence when
  139. # filling blocks of text, click this box|| To place only a single space
  140. # after the '.' at the end of each sentence when
  141. # filling blocks of text, click this box
  142. newPref flag doubleSpaces 1
  143. # To print a header at the top of each printed page, click this box||
  144. # To print only the contents of the window, without any identifying header,
  145. # click this box.
  146. newPref flag printHeader 1
  147. # To include a file's full path in the printed header, click this box
  148. # ||To place just a file's name in the printed header, click this box
  149. newPref flag printHeaderFullPath 0
  150. # To include the current time in printed headers, click this box
  151. # ||To remove the current time from printed headers, click this box
  152. newPref flag printHeaderTime 1
  153. # To choose from a listbox of possible completions if you try to 
  154. # complete a command for which no unique
  155. # suffix exists, click this box.||To abort the completion if no
  156. # unique suffix exists, click this box.
  157. newPref flag listPickIfMultCmps 1
  158. # if we have a choice between, say \left, \leftRight, \leftMore,
  159. # then we don't get stuck on '\left' with this option.
  160. newPref flag listPickIfNonUniqueStuckCmp 1
  161. # To clear old marks automatically when you select 'Mark File', 
  162. # click this box.||To check before clearing old marks, click this box.
  163. newPref flag quietlyClearMarks 1
  164. # To make Alpha beep when it asks you for something in the status bar, 
  165. # click this box.||To turn off the alert beep when using the status
  166. # bar, click this box.
  167. newPref flag promptNoisily 0
  168. # To prompt in the status bar if possible (rather than use a dialog),
  169. # click this box.||To use dialogs in preference to the status bar for
  170. # user input, click this box.
  171. newPref flag useStatusBar 1
  172. # Folder in which to store backups.  A null value tells Alpha to use
  173. # the file's current directory.
  174. newPref var backupFolder ""
  175. # Extension to add to files when backing them up
  176. newPref var backupExtension "~"
  177. # If the previous backup is more recent than this number of hours,
  178. # then don't make a new backup.  If greater than zero, this means the 
  179. # backups Alpha has tend to be significantly different to the current file.
  180. newPref var backupAgeRequirementInHours 0.0
  181. # When creating files for uploading through the Ftp menu, save them
  182. # with this eol format.  Note that some ftp clients may translate
  183. # eols for you as they up/download.
  184. newPref var createFtpType unix global "" "mac unix ibm"
  185. # Number of pixels from left edge of window to start of text
  186. newPref var horMargin 4
  187. # Alpha will visually indent code by this many characters to 
  188. # indicate its structure
  189. newPref var indentationAmount 4
  190. # If we have fewer than this many items in the opt-titlebar-menu,
  191. # add the contents of the current directory
  192. newPref var minItemsInTitlePopup 5
  193. # The tiling items in the 'Arrange' menu will relocate this many
  194. # windows, starting with the front window and moving back.
  195. newPref var numWinsToTile 2
  196. newPref var tileHeight [expr {$screenHeight - 60}]
  197. newPref var tileLeft 2
  198. newPref var tileMargin 22
  199. newPref var tileProportion .60
  200. newPref var tileTop 40
  201. newPref var tileWidth [expr {$screenWidth - 10}]
  202. newPref linkvariable defLeft 2
  203. newPref linkvariable defTop 40
  204. newPref linkvariable defHeight $tileHeight
  205. newPref linkvariable defWidth [expr {$tileWidth > 510 ? 510 : $tileWidth}]
  206. # The fraction of the screen the small batch-search, or diff-style 
  207. # windows use up.
  208. newPref var batchListWindowFraction 0.25 global win::SetProportions
  209. # The type of keyboard you have.  This influences some of the keyboard
  210. # shortcuts Alpha places in the menus, and is used for better setting
  211. # of user-defined key-bindings.
  212. newPref variable keyboard US global keys::keyboardChanged keyboards array
  213. # This dictates the spelling Alpha uses for words like 'Colour/Color'
  214. newPref var spelling 0 global "" "American British" index
  215. # Useful for debugging some complex startup problems; you can choose
  216. # between logging all errors for later viewing, or displaying them
  217. # immediately
  218. newPref var reportErrors 1 global "" \
  219.   [list "Log startup errors" "Report errors immediately"] index
  220. # re-read internet preferences from IC each startup
  221. newPref flag synchroniseWithInternetConfig 0
  222. # The font to use for printing documents
  223. newPref linkvariable printerFont "" global "" "system monaco courier geneva helvetica profont times {new york}"
  224. # The font-size to use for printing documents.
  225. newPref linkvariable printerFontSize "" global "" "7 9 10 12 14 18"
  226. # Default font to use for new windows
  227. newPref linkvariable defaultFont "monaco" global "" "system monaco courier geneva helvetica profont times {new york} programmer"
  228. # Default font size to use for new windows
  229. newPref linkvariable fontSize 9 global "" "7 9 10 12 14 18"
  230. # The amount of information to store in the resource fork of saved text
  231. # files.  This can include font, tab, selection,... information.  Here, 'think' 
  232. # implies font, tab information, and 'mpw' adds window position and window
  233. # selection.
  234. newPref linkvariable savedState "" global "" "none think mpw"
  235. # The default size for a tab character for new windows (not the same as 
  236. # the amount of space used for visual indentation of code).
  237. # Alpha can be configured to remember tab sizes for previously edited documents
  238. # -- see 'savedState' for details.
  239. newPref linkvariable tabSize 8
  240. # Regexp used for automatic word wrapping
  241. newPref linkvariable wrapBreak {[\w_]+}
  242. # Regexp used for automatic word wrapping
  243. newPref linkvariable wrapBreakPreface {([^\w_])}
  244. # Auto-wrap if the user types further than this column
  245. newPref linkvariable wrapHigh ""
  246. # Auto-un-wrap if the user deletes chars so a line is shorter than this
  247. newPref linkvariable wrapLow ""
  248. # The maximum number of changes before auto-saving occurs (if set via the 
  249. # autoSave preference)
  250. newPref linkvariable changesLim ""
  251. # When wrapping text (see 'Word Wrap' preference), wrapping occurs
  252. # for any text beyond this column position.  Used by all 'Fill' routines
  253. newPref linkvariable fillColumn 75
  254. # Set to the regular expression that ALPHA uses to find function declarations.
  255. newPref linkvariable funcExpr {^[^ \t\(#\r/@].*\(.*\)$}
  256. # The parenthesised regexp block to use for the func name
  257. newPref linkvariable funcPar 1
  258. # Number of blanks left at beginning of lines by 'fill' routines.
  259. newPref linkvariable leftFillColumn 0
  260. # Alpha asks the user if wrapping should be done whenever the user opens 
  261. # files that have lines longer than 'paraColumn' characters
  262. newPref linkvariable paraColumn 180
  263. # Text column to use as the sort key when executing 'Sort Lines'.
  264. newPref linkvariable sortColumn 0
  265. # File to use for Tag searches.
  266. newPref linkio-file tagFile [file join $HOME cTAGS]
  267. # Margin size for printing
  268. newPref linkvariable leftMargin ""
  269. # Margin size for printing
  270. newPref linkvariable bottomMargin ""
  271. # Margin size for printing
  272. newPref linkvariable topMargin ""
  273. # Regular expression used to defines words for all internal operations.  Most
  274. # modes have their own definition of this variable.
  275. newPref linkvariable wordBreak {\w+}
  276. # Prepended to 'wordBreak' when looking backwards for a word.  Most
  277. # modes have their own definition of this variable.
  278. newPref linkvariable wordBreakPreface {(\W)}
  279. # Flags that won't appear in the menu.
  280. linkVar numLock
  281. # Usual place you use for downloading updates to Alpha and its packages.
  282. newPref var defaultAlphaDownloadSite "" global "" remote::site array
  283. # bug in alpha-IC interaction
  284. if {![catch "icGetPref DownloadFolder" res] && [file exists $res]} {
  285.     # Default download location for files from the internet
  286.     newPref var downloadFolder $res
  287. } else {
  288.     newPref var downloadFolder $HOME
  289. }
  290.  
  291. if {[info tclversion] >= 8.0 && $tcl_platform(platform) == "macintosh"} {
  292. # To use the newer 'Navigation Services' file open/save dialogs
  293. # if possible, click this box
  294. # ||To use the old 'Standard File Dialogs', click this box
  295. newPref flag useNavServices 0
  296. lunion flagPrefs(Appearance) useNavServices
  297. }
  298.  
  299. # if first item = code, then indent relative to code by given value of second arg
  300. # if first item = fixed, then force indentation to given level
  301. set indentationTypes [list "code 0" "code 4" "fixed 0"]
  302.  
  303. lunion flagPrefs(Backups)    backup undoOn autoSave
  304. lunion varPrefs(Backups)    backupFolder backupExtension changesLim \
  305.   backupAgeRequirementInHours
  306. lunion flagPrefs(Text)        hyperText doubleSpaces dragAndDrop    
  307. lunion varPrefs(Text)        fillColumn leftFillColumn paraColumn wrapLow \
  308.   wrapHigh sortColumn
  309. lunion flagPrefs(Appearance)    blinkingCursor blockCursor coloring \
  310.   showInvisibles smallMenuFont sortFuncsMenu tearoffMenus   \
  311.   promptNoisily includeDescriptionsInDialogs
  312. lunion varPrefs(Appearance)    defaultFont fontSize tabSize 
  313. lunion flagPrefs(Printer)    printHeader printHeaderFullPath printHeaderTime
  314. lunion varPrefs(Printer)    bottomMargin printerFont printerFontSize \
  315.   topMargin leftMargin
  316. lunion flagPrefs(Tags)        
  317. lunion varPrefs(Tags)        funcPar tagFile
  318. lunion flagPrefs(Window)    autoHScroll forceMainScreen horScrollBar \
  319.   moveInsertion powerThumb sortedIsDefault iconifyOnSwitch lockStatus \
  320.   useStatusBar
  321. lunion varPrefs(Window)        defHeight defLeft defTop defWidth \
  322.   minItemsInTitlePopup savedState
  323. lunion flagPrefs(Tiling)        
  324. lunion varPrefs(Tiling)        numWinsToTile batchListWindowFraction horMargin \
  325.   tileHeight tileProportion tileLeft tileMargin tileTop tileWidth 
  326. lunion flagPrefs(Electrics)    listPickIfMultCmps listPickIfNonUniqueStuckCmp \
  327.   askDeleteSelection
  328. lunion varPrefs(Electrics)    indentationAmount elecStopMarker
  329. lunion flagPrefs(Files) tempMem projectorAware openAllFiles
  330. lunion varPrefs(Files) 
  331. lunion "flagPrefs(Helper Applications)"
  332. lunion "varPrefs(Helper Applications)"
  333. lunion flagPrefs(WWW) synchroniseWithInternetConfig
  334. lunion varPrefs(WWW) defaultAlphaDownloadSite createFtpType downloadFolder \
  335.   browserSig ftpSig httpDownloadSig
  336. lunion flagPrefs(International)
  337. lunion varPrefs(International) keyboard spelling 
  338. lunion flagPrefs(Packages)
  339. lunion varPrefs(Packages) 
  340. lunion flagPrefs(Errors)
  341. lunion varPrefs(Errors) reportErrors
  342.  
  343. proc alpha::addToPreferencePage {page args} {
  344.     global varPrefs flagPrefs allFlags
  345.     set vars [lremove -l $args $allFlags]
  346.     set flags [lremove -l $args $vars]
  347.     eval lunion varPrefs($page) $vars
  348.     eval lunion flagPrefs($page) $flags
  349. }
  350.  
  351. namespace eval indent {}
  352.  
  353. set indent::amounts [list "nothing" "half-tab" "tab"]
  354.  
  355. proc indent::setup {args} {
  356.     global indent_amounts indentationAmount
  357.     set indent_amounts(0) 0
  358.     set indent_amounts(1) [expr {$indentationAmount/2}]
  359.     set indent_amounts(2) $indentationAmount
  360.     set indent_amounts(-1) [expr {-$indentationAmount/2}]
  361.     set indent_amounts(-2) [expr {-$indentationAmount}]
  362. }
  363. indent::setup
  364. trace variable indentationAmount w indent::setup
  365.  
  366. proc getFileSig {f} {
  367.     getFileInfo $f arr
  368.     if {[info exists arr(creator)]} {
  369.     return $arr(creator)
  370.     } else {
  371.     return ""
  372.     }
  373. }
  374.  
  375. proc getFileType {f} {
  376.     getFileInfo $f arr
  377.     if {[info exists arr(type)]} {
  378.     return $arr(type)
  379.     } else {
  380.     return "TEXT"
  381.     }
  382. }
  383.  
  384. # get defaults from internet config
  385. if {$synchroniseWithInternetConfig} {
  386.     catch {set browserSig [getFileSig [icGetPref -t 1 Helper•http]]}
  387.     catch {set ftpSig [getFileSig [icGetPref -t 1 Helper•ftp]]}
  388. } else {
  389.     catch {ensureset browserSig [getFileSig [icGetPref -t 1 Helper•http]]}
  390.     catch {ensureset ftpSig [getFileSig [icGetPref -t 1 Helper•ftp]]}
  391. }
  392.  
  393. # The application signature of your internet browser
  394. newPref v browserSig MOSS
  395. # The application signature of your ftp client
  396. newPref v ftpSig Arch
  397. # The application signature of your internet browser to use for downloading
  398. # only (rather than viewing)
  399. newPref v httpDownloadSig $browserSig
  400.  
  401. # The application signature of your stuffit expander
  402. newPref v unstuffSig SITx
  403.  
  404. namespace eval win {}
  405.  
  406. proc win::SetProportions {} {
  407.     global tileHeight tileWidth tileTop tileLeft tileHeight \
  408.       errorHeight errorDisp tileMargin batchListWindowFraction
  409.     set errorHeight [expr {int ($batchListWindowFraction * ($tileHeight - $tileMargin))}]
  410.     set errorDisp [expr {int ((1- $batchListWindowFraction) * ($tileHeight - $tileMargin))}]
  411. }
  412.  
  413. proc wordWrapProc {val} { 
  414.     global mode wordWrap modifiedArrayElements 
  415.     global ${mode}modeVars
  416.     set wordWrap $val
  417.     set ${mode}modeVars(wordWrap) $val
  418.     lappend modifiedArrayElements [list wordWrap ${mode}modeVars]
  419. }
  420.  
  421.  
  422. proc toggleNumLock {} {
  423.     global numLock modifiedVars
  424.     
  425.     set numLock [expr {1 - $numLock}]
  426.     lappend modifiedVars numLock
  427. }
  428.  
  429. #============================================================================
  430. # declare these as modeVars in advance.  I'm not sure it is necessary (Vince)
  431. lunion modeVars funcExpr wrapBreakPreface wrapBreak wordBreakPreface wordBreak
  432.  
  433. # 'mode' is nothing when we start up.
  434. set mode        {}
  435. set lastMode        0
  436. set reverting        {}
  437.  
  438. # For quithook
  439. set modifiedVars    {}
  440. set modifiedArrVars     {}
  441. set modifiedModeVars    {}
  442. set modifiedArrayElements {}
  443.  
  444. namespace eval win {}
  445. ensureset win::Active ""
  446.  
  447. # Default settings of some global parameters (not preferences settings)
  448. # These will all be over-written by user-defs if set.
  449. set resumeRevert 0
  450. set prefixString ">\ "
  451. set suffixString "\ <--"
  452. # mapping of windows to current modes.
  453. set win::Modes("") ""
  454. # keep count of number of dirty windows.
  455. set win::NumDirty 0
  456. set win::Current ""
  457. # For mark stack.
  458. set markName 0
  459. set markStack ""
  460. set winMenu "•263"
  461. set keyboard "U.S."
  462. set oldkeyboard ""
  463.  
  464. win::SetProportions
  465.  
  466. lunion ftpSigs Arch FTCh Woof
  467. lunion texSigs OTEX *TEX *XeT MPS*
  468. lunion browserSigs MOSS MSIE dogz OlG1 HTVW
  469. lunion httpDownloadSigs MOSS MSIE dogz OlG1 Geni Arch
  470. lunion tclshSigs WIsH TclL Geni
  471. lunion unstuffSigs SITx MV50
  472.  
  473. namespace eval keys {}
  474.  
  475. array set keys::specialProcs { 
  476.     "Next Stop" "ring::+"
  477.     "Next Stop Or Indent" "bind::IndentOrNextstop"
  478.     "Complete" "bind::Completion"
  479.     "Complete Or Tab" "bind::TabOrComplete"
  480.     "Prev Stop" "ring::-"
  481.     "Real Tab" "insertActualTab"
  482.     "nth Stop" "ring::nth"
  483.     "Clear All Stops" "ring::clear"
  484. }
  485.  
  486. array set keys::specialBindings {
  487.     "Complete" "<O/c"
  488.     "Prev Stop" "<U/c"
  489.     "Real Tab" "<I/c"
  490.     "nth Stop" "<B/c"
  491.     "Clear All Stops" "<U<B/c"
  492.     "Next Stop" ""
  493.     "Complete Or Tab" ""
  494.     "Next Stop Or Indent" "/c"
  495. }
  496.  
  497. # Note: the Mercutio MDEF can only handle icon-suite resources
  498. # with id's from 208 to 208+255 = 463.  Hence many of the little
  499. # icons which Alpha contains cannot appear in menus.  You could
  500. # of course do a little hacking....
  501. set alpha::_icons {
  502.     {DanR "Think Reference" 265}
  503.     {OTEX "OzTeX" 266}
  504.     {*TEX "TeXtures" 267}
  505.     {XXXX "LaTeX" 270}
  506.     {*XeT "CMacTeX" 272}
  507.     {TeX+ "DirectTeX Pro" 299}
  508.     {CWIE "Codewarrior" 268}
  509.     {dogz "Cyberdog" 281}
  510.     {Vbib "BibTeX" 282}
  511.     {SLab "Scilab" 283}
  512.     {IGR0 "Igor Pro" 284}
  513.     {JAVC "Apple Applet Viewer" 285}
  514.     {MOSS "Netscape Navigator" 293}
  515.     {MOSS "Netscape Communicator" 294}
  516.     {MSIE "Microsoft Internet Explorer" 295}
  517.     {OlG1 "MacLynx" 296}
  518.     {DanR "Think Ref Viewer" 310}
  519.     {gsVR "Ghostview" 311}
  520.     {PnLF "Finger" 313}
  521.     {RZMI "MakeIndex" 314}
  522.     {FTCh "Fetch" 315}
  523.     {TGE+ "Tarmac" 316}
  524.     {Gzip "Gzip" 317}
  525.     {DStf "DropStuff" 318}
  526.     {SITx "StuffIt Expander" 319}
  527.     {ALTV "Programmer's Assistant" 400}
  528.     {MPAD "Mupad" 411}
  529.     {GPSE "Gnuplot" 415}
  530.     {Vodo "VOODOO" 500}
  531. }
  532.  
  533. namespace eval remote {}
  534.  
  535. ensureset "remote::site(Alpha's Home)" \
  536.   "ftp://alpha.olm.net/pub/packages/"
  537. ensureset "remote::site(Alpha's Upload site)" \
  538.   "ftp://alpha.olm.net/incoming/"
  539. ensureset "remote::site(Vince's Alpha-D site)" \
  540.   "ftp://ftp.ucsd.edu/pub/alpha/"
  541.  
  542. ensureset remote::listing {}
  543.  
  544. namespace eval keyboard {}
  545.  
  546. # array set keyboard::localized {
  547. #     Svensk Swedish
  548. #     U.S. U.S.
  549. # }
  550. # # Works with MacOS 8.5, but possibly not earlier releases.
  551. # if {![catch {aebuild::result 'MACS' kybd ckyl} __keyboard] && \
  552. #   [info exist keyboard::localized($__keyboard)]} {
  553. #     set keyboard [set keyboard::localized($__keyboard)]
  554. # }
  555. # catch {unset keyboard::localized __keyboard}
  556.  
  557. set "keyboards(Australian)" {
  558.  {§1234567890-=[];'\`,./}
  559.  {±!@#$%^&*()_+{}:"|~<>?}
  560.  <U/[
  561.  <U/]
  562.  {'§' 0x0a '±' 0x0a}
  563. }
  564. set "keyboards(Brasil)" {
  565.  {§1234567890'+º´ç~\<,.-}
  566.  {±!"#$%&/()=?*ª`Ç^|>;:_}
  567.  <I<U/8
  568.  <I<U/9
  569.  {'§' 0x0a '±' 0x0a 'º' 0x21 'ª' 0x21 'ç' 0x29 'Ç' 0x29 '´' 0x1e '`' 0x1e '~' 0x27 '^' 0x27}
  570. }
  571. set "keyboards(British)" {
  572.  {§1234567890-=[];'\`,./}
  573.  {±!@£$%^&*()_+{}:"|~<>?}
  574.  <U/[
  575.  <U/]
  576.  {'§' 0x0a '±' 0x0a '£' 0x14}
  577. }
  578. set "keyboards(Canadian - CSA)" {
  579.  {/1234567890-=^ç;èàù,.é}
  580.  {\!@#$%?&*()_+¨Ç:ÈÀÙ'"É}
  581.  <I/7
  582.  <I/8
  583.  {'ç' 0x1e 'Ç' 0x1e 'è' 0x27 'È' 0x27 'à' 0x2a 'À' 0x2a 'é' 0x2c 'É' 0x2c 'ù' 0x32 'Ù' 0x32 '^' 0x21 '¨' 0x21 '7' 0x1a '8' 0x1c}
  584. }
  585. set "keyboards(Canadian - ISO)" {
  586.  {¬1234567890-=^ç;èàù,.é}
  587.  {°!"#$%?&*()_+¨Ç:ÈÀÙ'.É}
  588.  <I/7
  589.  <I/0
  590.  {'°' 0x0a '¬' 0x0a 'ç' 0x1e 'Ç' 0x1e 'è' 0x27 'È' 0x27 'à' 0x2a 'À' 0x2a 'é' 0x2c 'É' 0x2c 'ù' 0x32 'Ù' 0x32 '^' 0x21 '¨' 0x21 '7' 0x1a '0' 0x1d}
  591. }
  592. set "keyboards(Canadian - French)" {
  593.  {<1234567890-='[;`/¨,.é}
  594.  {>!@#$%?&*()_+"]:^|°<>ç}
  595.  <I/[
  596.  <I<U/[
  597.  {'é' 0x2c 'ç' 0x2c '¨' 0x06 '°' 0x06 '`' 0x27 '^' 0x27}
  598. }
  599. set "keyboards(Danish)" {
  600.  {$1234567890+´å¨æø'<,.-}
  601.  {§!"#€%&/()=?`Å^ÆØ*>;:_}
  602.  <I<U/8
  603.  <I<U/9
  604.  {'§' 0x0a '€' 0x15 'å' 0x21 'Å' 0x21 'æ' 0x29 'Æ' 0x29 'ø' 0x27 'Ø' 0x27 '¨' 0x1e '^' 0x1e '´' 0x18 '`' 0x18}
  605. }
  606. set "keyboards(Dutch)" {
  607.  {§1234567890-=[];'\`,./}
  608.  {±!@#$%^&*()_+{}:"|~<>?}
  609.  <U/[
  610.  <U/]
  611.  {'§' 0x0a '±' 0x0a}
  612. }
  613. set "keyboards(Español - ISO)" {
  614.  {º1234567890'¡`+ñ´ç<,.-}
  615.  {ª!"·$%&/()=?¿^*ѨÇ>;:_}
  616.  <I/´
  617.  <I/ç
  618.  {'ç' 0x2a 'ñ' 0x29 'Ç' 0x2a 'Ñ' 0x29 '¡' 0x18 '¿' 0x18 'º' 0x0a 'ª' 0x0a '·' 0x14 '`' 0x21 '^' 0x21 '´' 0x27 '¨' 0x27}
  619. }
  620. set "keyboards(Finnish)" {
  621.  {§1234567890+´å¨öä'<,.-}
  622.  {°!"#€%&/()=?`Å^ÖÄ*>;:_}
  623.  <I<U/8
  624.  <I<U/9
  625.  {'§' 0x0a '°' 0x0a '€' 0x15 'å' 0x21 'ä' 0x27 'ö' 0x29 'Å' 0x21 'Ä' 0x27 'Ö' 0x29 '¨' 0x1e '^' 0x1e '´' 0x18 '`' 0x18}
  626. }
  627. set "keyboards(Flemish)" {
  628.  {@&é"'(§è!çà)-^$ù`<,;:=}
  629.  {#1234567890°_¨*%£>?./+}
  630.  <I/(
  631.  <I/)
  632.  {'é' 0x13 '(' 0x17 '§' 0x16 'è' 0x1a 'ç' 0x19 'à' 0x1d ')' 0x1b '°' 0x1b 'ù' 0x27 '^' 0x21 '¨' 0x21 '`' 0x2a '£' 0x2a}
  633. }
  634. set "keyboards(French)" {
  635.  {@&é"'(§è!çà)-^$ù`<,;:=}
  636.  {#1234567890°_¨*%£>?./+}
  637.  <I/(
  638.  <I/)
  639.  {'é' 0x13 '(' 0x17 '§' 0x16 'è' 0x1a 'ç' 0x19 'à' 0x1d ')' 0x1b '°' 0x1b 'ù' 0x27 '^' 0x21 '¨' 0x21 '`' 0x2a '£' 0x2a}
  640. }
  641. set "keyboards(French - numerical)" {
  642.  {@&é"'(§è!çà)-^$ù`<,;:=}
  643.  {#1234567890°_¨*%£>?./+}
  644.  <I/(
  645.  <I/)
  646.  {'é' 0x13 '(' 0x17 '§' 0x16 'è' 0x1a 'ç' 0x19 'à' 0x1d ')' 0x1b '°' 0x1b 'ù' 0x27 '^' 0x21 '¨' 0x21 '`' 0x2a '£' 0x2a}
  647. }
  648. set "keyboards(German)" {
  649.  {^1234567890ß´ü+öä#<,.-}
  650.  {°!"§$%&/()=?`Ü*ÖÄ^>;:_}
  651.  <I/8
  652.  <I/9
  653.  {'^' 0x0a '°' 0x0a '§' 0x14 'ü' 0x21 'ö' 0x29 'ä' 0x27 'Ü' 0x21 'Ö' 0x29 'Ä' 0x27 'ß' 0x1b '´' 0x18 '`' 0x18 '8' 0x1c '9' 0x19}
  654. }
  655. set "keyboards(Italian)" {
  656.  {@&"'(çè)£àé-=ì$ù§<,;:ò}
  657.  {#1234567890_+^*%°>?./!}
  658.  <I/(
  659.  <I/)
  660.  {'(' 0x15 ')' 0x1a 'ç' 0x17 'è' 0x16 '£' 0x1c 'à' 0x19 'é' 0x1d 'ì' 0x21 'ù' 0x27 'ò' 0x2c '§' 0x2a '°' 0x2a}
  661. }
  662. set "keyboards(Norwegian)" {
  663.  {'1234567890+´å¨øæ@<,.-}
  664.  {§!"#$%&/()=?`Å^ØÆ*>;:_}
  665.  <I<U/8
  666.  <I<U/9
  667.  {'§' 0x0a 'å' 0x21 'æ' 0x27 'ø' 0x29 'Å' 0x21 'Æ' 0x27 'Ø' 0x29 '¨' 0x1e '^' 0x1e '´' 0x18 '`' 0x18}
  668. }
  669. set "keyboards(Spanish)" {
  670.  {[1234567890-=´`ñ;'<,.ç}
  671.  {]¡!#$%/&*()_+º¨Ñ:">¿?Ç}
  672.  <I<U/<
  673.  <U/[
  674.  {'¡' 0x12 '´' 0x21 'º' 0x21 'ñ' 0x29 'Ñ' 0x29 '¿' 0x2b 'ç' 0x2c 'Ç' 0x2c '`' 0x1e '¨' 0x1e}
  675. }
  676. set "keyboards(Swedish)" {
  677.  {§1234567890+´å¨öä'<,.-}
  678.  {°!"#€%&/()=?`Å^ÖÄ*>;:_}
  679.  <I<U/8
  680.  <I<U/9
  681.  {'§' 0x0a '°' 0x0a '€' 0x15 'å' 0x21 'Å' 0x21 'ä' 0x27 'Ä' 0x27 'ö' 0x29 'Ö' 0x29 '¨' 0x1e '^' 0x1e '´' 0x18 '`' 0x18}
  682. }
  683. set "keyboards(Swiss French)" {
  684.  {§1234567890'^è¨éà$<,.-}
  685.  {°+"*ç%&/()=?`ü!öä£>;:_}
  686.  <I/8
  687.  <I/9
  688.  {'§' 0x0a '°' 0x0a 'ü' 0x21 'è' 0x21 'ö' 0x29 'é' 0x29 'ä' 0x27 'à' 0x27 'ç' 0x15 '£' 0x2a '¨' 0x1e '!' 0x1e '^' 0x18 '`' 0x18 '8' 0x1c '9' 0x19}
  689. }
  690. set "keyboards(Swiss German)" {
  691.  {§1234567890'^ü¨öä$<,.-}
  692.  {°+"*ç%&/()=?`è!éà£>;:_}
  693.  <I/8
  694.  <I/9
  695.  {'§' 0x0a '°' 0x0a 'ü' 0x21 'è' 0x21 'ö' 0x29 'é' 0x29 'ä' 0x27 'à' 0x27 'ç' 0x15 '£' 0x2a '¨' 0x1e '!' 0x1e '^' 0x18 '`' 0x18 '8' 0x1c '9' 0x19}
  696. }
  697. set "keyboards(U.S.)" {
  698.  {§1234567890-=[];'\`,./}
  699.  {±!@#$%^&*()_+{}:"|~<>?}
  700.  <U/[
  701.  <U/]
  702.  {'§' 0x0a '±' 0x0a}
  703. }
  704.  
  705. set "keyboards(Slovenian)" {
  706.   {“1234567890/+πËÊæ<,.-}
  707.   {”!"#$%&'()=?*©–»ΔÆ>;:_}
  708.   <U<I/π
  709.   <U<I/
  710.   {'“' 0x0a '”' 0x0a 'π' 0x21 '©' 0x21 '' 0x1e '–' 0x1e 'Ë' 0x29 '»' 0x29 'Ê' 0x27 'Δ' 0x27 'æ' 0x2a 'Æ' 0x2a}
  711. }
  712.  
  713. set "keyboards(Croatian)" {
  714.   {“1234567890/+‰∂ãçÏ<,.-}
  715.   {”!"#$%&'()=?*·≠âåÎ>;:_}
  716.   <U<I/‰
  717.   <U<I/∂
  718.   {'“' 0x0a '”' 0x0a '‰' 0x21 '·' 0x21 '∂' 0x1e '≠' 0x1e 'ã' 0x29 'â' 0x29 'ç' 0x27 'å' 0x27 'Ï' 0x2a 'Î' 0x2a}
  719. }
  720.  
  721. set "keyboards(Roman - JIS)" {
  722.   {§1234567890-^@[;:]`,./}
  723.   {±!"#$%&'()0=~`{+*}~<>?}
  724.  <U/[
  725.  <U/]
  726.  {'§' 0x0a '±' 0x0a}
  727. }
  728.  
  729.